/*******************************************************************
 * Copyright (c) [2025] [入门游戏开发版权所有]
 *
 * 创建日期: [2025-5-11]
 * 作者: [1024]
 *
 *
 * 版权所有。未经版权所有者明确书面许可，任何个人或组织
 * 不得复制、修改、分发或以其他方式使用本文件。
 * 仅供个人学习使用
 *
 * 联系方式:
 * Email: [addylines@163.com]
 ******************************************************************/
import Cup from './Cup'

cc.Class({
    extends: cc.Component,

    properties: {
        // 水滴预制件
        waterPrefab: {
            default: null,
            type: cc.Prefab
        },
        // 生成水滴的位置节点（例如一个标识点）
        spawnPoint: {
            default: null,
            type: cc.Node
        },
        // 生成间隔时间
        spawnInterval: 0.2,
        // 水滴在水平方向的初始速度（单位：像素/秒，根据实际情况调整）
        horizontalSpeed: 400,
        // 限制场景中同时存在的水滴数量
        maxWaterCount: 30,
        // 水滴的容器节点，所有生成的水滴都挂在该节点下，便于统计数量
        waterContainer: {
            default: null,
            type: cc.Node
        },
        cup: Cup,
        failPage: cc.Node
    },

    onLoad() {

    },
    startSpawnWater() {
        // 定时调用 spawnWater 方法生成水滴
        this.schedule(this.spawnWater, this.spawnInterval);
        // 水滴喷出15s后没有满，游戏结束
        this.scheduleOnce(() => {
            if(this.cup.score < 25){
                this.failPage.active = true
            }
        }, 15) 
    },

    spawnWater() {
        // 判断当前水滴数量是否已达到上限
        if (this.waterContainer.childrenCount >= this.maxWaterCount) {
            return; // 超过上限，不生成新的水滴
        }
        // 实例化水滴预制件
        let water = cc.instantiate(this.waterPrefab);
        water.parent = this.waterContainer; // 把水滴挂在专门的容器节点下

        // 设置水滴的位置：将 spawnPoint 的位置转换到 waterContainer 的局部坐标
        let worldPos = this.spawnPoint.parent.convertToWorldSpaceAR(this.spawnPoint.position);
        let pos = this.waterContainer.convertToNodeSpaceAR(worldPos)
        water.setPosition(cc.v2(pos.x + 50, pos.y));

        // 设置水滴的水平初始速度
        let rb = water.getComponent(cc.RigidBody);
        if (rb) {
            // 设定水平速度为 horizontalSpeed，垂直方向初始速度设为 0
            rb.linearVelocity = cc.v2(this.horizontalSpeed, 0);
        }
    }
});